diff --git a/astropy/table/table.py b/astropy/table/table.py
index 5afe2127a3..4170992849 100644
--- a/astropy/table/table.py
+++ b/astropy/table/table.py
@@ -24,6 +24,7 @@ from astropy.utils.data_info import BaseColumnInfo, MixinInfo, DataInfo
 from astropy.utils.decorators import format_doc
 from astropy.io.registry import UnifiedReadWriteMethod
 
+
 from . import groups
 from .pprint import TableFormatter
 from .column import (BaseColumn, Column, MaskedColumn, _auto_names, FalseArray,
@@ -1240,11 +1241,17 @@ class Table:
                                 'did not return a valid mixin column')
 
         # Structured ndarray gets viewed as a mixin unless already a valid
-        # mixin class
+        # mixin class. This behavior will change in version 5.2 to instead add
+        # structured arrays as a Column. A FutureWarning is added to inform users.
         if (not isinstance(data, Column) and not data_is_mixin
                 and isinstance(data, np.ndarray) and len(data.dtype) > 1):
-            data = data.view(NdarrayMixin)
-            data_is_mixin = True
+            warnings.warn("Adding a structured np.array to a Table will result in a "
+                          "Column instead of an NdarrayMixin in version 5.2. To avoid "
+                          "this warning, explicitly convert the array to a Column with "
+                          "astropy.table.Column.", FutureWarning)
+            # The following line is commented out to prepare for version 5.2 changes:
+            # data = data.view(NdarrayMixin)
+            # data_is_mixin = True
 
         # Get the final column name using precedence.  Some objects may not
         # have an info attribute. Also avoid creating info as a side effect.
